package com.wzh.core.api.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;

import java.io.Serial;
import java.io.Serializable;

/**
 * @description: 自定义RPC异常
 * @author: wangzouhuax
 */
@Getter
public class RpcException extends RuntimeException  implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    private String errorCode;

    public RpcException(String errorCode, String errorMsg) {
        super(errorMsg);
        this.errorCode = errorCode;
    }

    // 可扩展性：提供带详细原因的构造函数
    public RpcException(String errorCode, String errorMsg, Throwable cause) {
        super(errorMsg, cause);
        this.errorCode = errorCode;
    }

    // 可扩展性：提供默认错误信息的构造函数，方便在不明确错误信息时使用
    public RpcException(String errorCode) {
        this(errorCode, "An error occurred in RPC call.");
    }

    // 可扩展性：考虑未来可能的国际化需求，虽然这里没有具体实现，但预留了接口
    public String getErrorMsg(String locale) {
        // 实际项目中可能会通过ResourceBundle等方式根据locale动态获取错误信息
        // 这里仅作为示例，实际实现需要根据项目具体需求来做
        return "Error message for " + locale;
    }

}
